package tr.edu.ege.kipler.satisfiability.container.creational;

import tr.edu.ege.kipler.satisfiability.container.ABox;
import tr.edu.ege.kipler.satisfiability.container.PBox;
import tr.edu.ege.kipler.satisfiability.container.RBox;
import tr.edu.ege.kipler.satisfiability.container.TBox;

/**
 * 
 * @author İnanç Seylan
 *
 */
public abstract class BoxFactory {
	public abstract ABox createABox();

	public abstract PBox createPBox();

	public abstract RBox createRBox();

	public abstract TBox createTBox();

	public static BoxFactory getFactory(ContainerType wcsType) {
		BoxFactory result = null;
		switch (wcsType) {
		case SHQ:
			result = new SHQBoxFactory();
			break;
		case SHIQ_BASIC:
			result = new SHIQBasicBoxFactory();
			break;
		case SHIQ_MODIFIED_INDIVIDUAL:
			result = new SHIQModifiedIndividualListBoxFactory();
			break;
		case SHOIQ_BASIC:
			result = new SHOIQBasicBoxFactory();
			break;
		case SHOIQ_MODIFIED_INDIVIDUAL:
			result = new SHOIQModifiedIndividualListBoxFactory();
			break;
		}
		return result;
	}
}
